[小ネタ]LINE Messaging API の 長期間有効なチャネルアクセストークンが廃止されます
はじめに
LINE Developers ニュースにて、報告があったように長期間有効なチャネルアクセストークンが廃止されます。
尚廃止は、2018年11月
に行われる予定とのことです。
今回は現時点で代替策の一つを紹介します。短期間有効なチャネルアクセストークンを発行するエンドポイントを使って取得しましょう。
アクセストークン取得する
webhookのバックエンドは、 Lambda(ランタイム: nodejs8.10)の想定です。
必要なモジュールは、request モジュールです。npmもしくはyarnでインストールしておいてください。
$ yarn add request
最大で30件のトークンを発行できます。上限を超過した場合は、発行順に既存のチャネルアクセストークンが取り消されます。
エンドポイント
POST https://api.line.me/v2/oauth/accessToken
リクエストヘッダー
ヘッダー名 | 説明 |
---|---|
Content-Type | application/x-www-form-urlencoded |
リクエストボディ
フィールド | タイプ | 説明 |
---|---|---|
grant_type | String | client_credentials |
client_id | String | チャネルID |
client_secret | String | チャネルシークレット |
レスポンス
プロパティ | タイプ | 説明 |
---|---|---|
error | String | エラーの概要 |
error_description | String | エラーの内容。特定の状況では返されません。 |
サンプルコード
const request = require('request'); function getToken() { return new Promise((resolve, reject) =>{ let option = { "url": "https://api.line.me/v2/oauth/accessToken", "method": "POST", "headers": { "Content-Type": "application/x-www-form-urlencoded" }, "form": { "grant_type": "client_credentials", "client_id": "YOUR_CHANNEL_ID", "client_secret": "YOUR_CHANNEL_SECRET" } }; request(option, function(error, response, body){ if (!error) { resolve(JSON.parse(body)); } else { console.log('Error: ' + error); reject(); } }); }); } exports.handler = async function(event) { let result = await getToken(); console.log(result); //expect output //{"access_token":"xxxxxxxxxxxxxxxxxx","expires_in":2592000,"token_type":"Bearer"} }
アクセストークンの発行ができました。 しかし都度 API にアクセスしてトークンを再発行する必要はないので、DynamoDB等で管理し洗い替えを行いましょう。
まとめ
いかがでしたでしょうか。
簡単なチャットボットは長期間利用可能なチャネルアクセストークンで済ませていましたが、今後はトークン管理が実装に追加されます。
作成を検討されている方は2018年11月まで
ですので、先に実装を済ませておくといいかもしれません。